草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

c++ - 带有引用的自动关键字行为

假设我有一个简单的C++类,其中包含一个私有(private)成员和一个getter:classMyClass{private:doublem_testValue=1;public:double&getTestValue(){returnm_testValue;}}现在假设我想调用getter来获取我的引用并编辑此值(并在值之前/之后打印)autotestVal=myClassInstance.getTestValue();std::cout输出是1113这不完全是我所期望的,因为显然m_testValue没有被编辑。事实上,如果我用double&替换auto:double&testV

c++ - 关于 vector 的内存行为的问题

最近我对std::vectors的内存(取消)分配有点困惑假设我得到了整数的法线vector:std::vectorintv;当我push_back一些int它随着时间的推移而增长。当我离开函数的范围(即)时,它会在不需要额外调用的情况下被释放。太棒了。让我们再举一个例子:structfoo_t{std::stringbar:unsignedintderp;}voidhurr(){std::vectorfoov;foo_tfoo;foo.bar="Sup?";foo.derp=1337;foov.push_back(foo);}好的。当我调用hurr()vector被创建,一个foo_

c++ - 了解 cout.operator<<() 的行为

根据thisquestion的最佳答案,cout相当于cout.operator.根据对thisquestion的回复,以上说法不正确。根据我自己的测试,cout.operator与cout相同当给定一个整数时。当给出一个float时,cout.operator将其强制为整数。当给定字符串文字时,如cout.operator,它输出的似乎是一个内存地址。当给定一个包含std::string的变量时,它会给出编译器错误。谁能给出初级到中级水平的解释是怎么回事? 最佳答案 这取决于expr.这两个问题的答案都是针对特定案例的,而不是一揽

c++ - std c++ 容器元素销毁和插入行为

我做了以下小程序:(基本上是一个检查它是否被创建、复制或销毁的类,以及一个执行其中一些操作的主类)classFoo{public:Foo(stringname):_name(name){coutv1,v2;system("PAUSE");v1.push_back(albert);system("PAUSE");v2.push_back(bert);system("PAUSE");v1=v2;system("PAUSE");}system("PAUSE");}输出看起来像这样:InstanceAlbertofclassFoocreated!InstanceBertofclassFoocr

C++ 链表行为

我有一些C代码,其中有两个链表(比如A和B),A被插入到B的特定位置,A仍然有元素。如何使用C++STL有效地模拟相同的行为?如果我尝试拼接,它会使第二个变空。谢谢,悟空。 最佳答案 尝试插入:B.insert(position,A.begin(),A.end());在“位置”之前插入B中A的元素的拷贝。A本身保持不变。看这个link 关于C++链表行为,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com

c++ - 调试 C++ 程序时出现奇怪的 gdb 消息

我用的是苹果的gdb,版本如下GNUgdb6.3.50-20050815(Appleversiongdb-1344)(FriJul301:19:56UTC2009)Copyright2004FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.Type"showcopying"toseetheconditions.Thereisab

c++ - std::function 和 std::bind 行为

我有这个代码:#include#include#includevoidfun(){std::cout>vec;vec.push_back(std::bind(fun));vec.push_back(gun);vec[0](1);vec[1](2);}您能解释一下std::bind是如何实现的吗?返回std::function绑定(bind)时void()功能?如何调用void()使用void(int)的功能仿函数? 最佳答案 作为function的模板参数传递的签名仅确定将绑定(bind)多少个占位符(_1)以及类型。实际函数的调用

c++ - 奇怪的 C++ float 错误

#includeusingnamespacestd;intmain(){cout.precision(32);floatval=268433072;floatadd=13.5;cout我正在用标准的g++main.cc编译上面的程序并使用./a.out运行它然而,我收到的输出是,结果=268433088显然,这不是正确的答案..为什么会这样?编辑:当使用double代替float时不会发生这种情况 最佳答案 您可以使用更简单的代码重现您的“float错误”#includeusingnamespacestd;intmain(){cou

c++ - 为什么两种情况下的行为不同 1st。整数 i = 1,2,3;和第二。诠释我;我 = 1,2,3;

这个问题在这里已经有了答案:Whyisthisdoubleinitializationwithacommaillegal?(4个答案)关闭9年前。在GCC编译器上工作,在C程序中使用以下两种运算符,观察到不同的行为。1.inti=1,2,3;printf("%d",i);//thiswillgivecompiletimeerror还有,2.inti;i=1,2,3;printf("%d",i);//Itsoutputwillbe1.在第一种情况下,编译器给出错误“错误:预期标识符或数字常量前的‘(’”。在第二种情况下,没有错误,输出为1。有人可以在这里详细解释这两种情况下的编译器行为吗

c++ - 尝试执行 shared_ptr swap() 时出现奇怪错误

我是一个相对的C++新手,试图将一个现有项目从原始指针转换为使用C++11的shared_ptr.总的来说进展非常顺利,我认为我理解如何shared_ptr在移动语义、右值引用等方面工作。好东西。但是,我遇到了一个奇怪的错误,我不明白也不知道如何修复。先介绍一点背景。我有一个根植于名为EidosValue的抽象基类的类层次结构,和一个名为EidosValue_Int_vector的类是(间接地)一个具体的子类:classEidosValueclassEidosValue_Int:publicEidosValueclassEidosValue_Int_vector:publicEidos